diff --git a/system/language/english/form_validation_lang.php b/system/language/english/form_validation_lang.php
index 1362ef0..e44a9e2 100644
--- a/system/language/english/form_validation_lang.php
+++ b/system/language/english/form_validation_lang.php
@@ -53,12 +53,7 @@
 $lang['form_validation_less_than_equal_to']	= 'The {field} field must contain a number less than or equal to {param}.';
 $lang['form_validation_greater_than']		= 'The {field} field must contain a number greater than {param}.';
 $lang['form_validation_greater_than_equal_to']	= 'The {field} field must contain a number greater than or equal to {param}.';
-$lang['form_validation_between']		= 'The {field} field must contain a number between {param}.';
 $lang['form_validation_in']		= 'The {field} field must be within a predetermined list: {param}.';
-$lang['form_validation_not_in']		= 'The {field} field must not be within: {param}.';
-$lang['form_validation_date']		= 'The {field} field must be a proper date.';
-$lang['form_validation_before_date']		= 'The {field} field must be lesser than {param}.';
-$lang['form_validation_after_date']		= 'The {field} field must be greater than {param}.';
 
 /* End of file form_validation_lang.php */
 /* Location: ./system/language/english/form_validation_lang.php */
\ No newline at end of file
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php
index 778b905..f3c8826 100644
--- a/system/libraries/Form_validation.php
+++ b/system/libraries/Form_validation.php
@@ -1438,27 +1438,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Between two numeric values
-	 *
-	 * @param	int
-	 * @param	string
-	 * @return	bool
-	 */
-	public function between($str, $range)
-	{
-		if ( ! preg_match('/^\s?(\d+)\s?,\s?(\d+)\s?$/', $range))
-		{
-			return FALSE;
-		}
-
-		list($range_start, $range_end) = array_map('intval', explode(',', $range));
-
-		return is_numeric($str) ? ($str >= $range_start && $str <= $range_end) : FALSE;
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * Value should be within an array of values
 	 *
 	 * @param	string
@@ -1475,75 +1454,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Value should not be within an array of values
-	 *
-	 * @param	string
-	 * @param	array
-	 * @return	bool
-	 */
-	public function not_in($value, $list)
-	{
-		$list = array_map('trim', explode(',', (string) $list));
-
-		return ! in_array((string) $value, $list);
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Value should be a valid date
-	 *
-	 * @param	string
-	 * @return	bool
-	 */
-	public function date($date)
-	{
-		if (strtotime($date) === FALSE)
-		{
-			return FALSE;
-		}
-
-		if ($date instanceof DateTime)
-		{
-			return TRUE;	
-		}
-
-		$date = date_parse($date);
-
-		return checkdate($date['month'], $date['day'], $date['year']);
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Date should be lesser than $before_date
-	 *
-	 * @param	string
-	 * @param	string
-	 * @return	bool
-	 */
-	public function before_date($date, $before_date)
-	{
-		return (strtotime($date)!==FALSE && strtotime($before_date)!==FALSE) ? (strtotime($date) < strtotime($before_date)) : FALSE;
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * Date should be greater than $after_date
-	 *
-	 * @param	string
-	 * @param	string
-	 * @return	bool
-	 */
-	public function after_date($date, $after_date)
-	{
-		return (strtotime($date)!==FALSE && strtotime($after_date)!==FALSE) ? (strtotime($date) > strtotime($after_date)) : FALSE;
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * Is a Natural number  (0,1,2,3, etc.)
 	 *
 	 * @param	string
diff --git a/user_guide_src/source/libraries/form_validation.rst b/user_guide_src/source/libraries/form_validation.rst
index d14000e..69b6c68 100644
--- a/user_guide_src/source/libraries/form_validation.rst
+++ b/user_guide_src/source/libraries/form_validation.rst
@@ -962,12 +962,7 @@
                                      not numeric.
 **less_than_equal_to**    Yes        Returns FALSE if the form element is greater than the parameter value,                        less_than_equal_to[8]
                                      or not numeric.
-**between**               Yes        Returns FALSE if the form element is not within the given range.                              between[10,20]
 **in**                    Yes        Returns FALSE if the form element is not within a predetermined list.                         in[red,blue,green]
-**not_in**                Yes        Returns FALSE if the form element is within a predetermined list.                             not_in[red,blue,green]
-**date**                  No         Returns FALSE if the form element is not a proper date.
-**before_date**           Yes        Returns FALSE if the form element is greater than a predetermined date.                       before_date[2015-01-27]
-**after_date**            Yes        Returns FALSE if the form element is less than a predetermined date.                          after_date[2015-01-27]
 **alpha**                 No         Returns FALSE if the form element contains anything other than alphabetical characters.
 **alpha_numeric**         No         Returns FALSE if the form element contains anything other than alpha-numeric characters.
 **alpha_numeric_spaces**  No         Returns FALSE if the form element contains anything other than alpha-numeric characters
